//
// Created by denglibin on 19-4-10.
//

/**
 *   #include <sys/types.h>
    #include <unistd.h>
    off_t lseek(int fd, off_t offset, int whence);
    参数2: 偏移量
    参数3：从什么位置开始
    lseek()函数会重新定位被打开文件的位移量，根据参数offset以及whence的组合来决定：
第三个参数：
SEEK_SET:
　　从文件头部开始偏移offset个字节。
SEEK_CUR：
　　从文件当前读写的指针位置开始，增加offset个字节的偏移量。
SEEK_END：
　　文件偏移量设置为文件的大小加上偏移量字节。
 成功返回新的文件文件位置，错误返回-1并设置errno
 */
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include "base.h"
#define  BUF_SIZE 1024
static int main_(){
    int fd = open(PATH, O_RDONLY, 0644);
    if (fd == -1){
        perror("open");
        return -1;
    }
    int cur;
    lseek(fd, 10, SEEK_SET); // 从文件头部偏移10个字节
    //int cur = lseek(fd, 0, SEEK_END); //可以获取文件长度
    cur = lseek(fd, 6, SEEK_CUR); // 从当前位置偏移6个字节
    if(cur == -1){
        perror("lseek");
        close(fd);
        return -1;
    }
    printf("当前文件位置:%d\n", cur);
    char buf[BUF_SIZE];
    while ((read(fd, buf, BUF_SIZE)) != 0){
        printf("%s", buf);
        memset(buf, 0, BUF_SIZE);
    }
    close(fd);
    return 0;
}
